/*
 * LWSDK Header File
 * Copyright 1999, NewTek, Inc.
 *
 * LWMODELER.H -- LightWave Modeler Global State
 *
 * This header contains declarations for the global services and
 * internal states of the Modeler host application.
 */
#ifndef LWSDK_MODELER_H
#define LWSDK_MODELER_H

#include <lwsdk/lwtypes.h>


typedef int		 EltOpLayer;
#define OPLYR_PRIMARY	 0
#define OPLYR_FG	 1
#define OPLYR_BG	 2
#define OPLYR_SELECT	 3
#define OPLYR_ALL	 4
#define OPLYR_EMPTY	 5
#define OPLYR_NONEMPTY	 6

typedef int		 EltOpSelect;
#define OPSEL_GLOBAL	 0
#define OPSEL_USER	 1
#define OPSEL_DIRECT	 2


#define LWSTATEQUERYFUNCS_GLOBAL	"LWM: State Query 3"

typedef struct st_LWStateQueryFuncs {
	int		(*numLayers) (void);
	unsigned int	(*layerMask) (EltOpLayer);
	const char *	(*surface)   (void);
	unsigned int	(*bbox)      (EltOpLayer, double *minmax);
	const char *	(*layerList) (EltOpLayer, const char *);
	const char *	(*object)    (void);
	int		(*mode)      (int);
	const char *	(*vmap)      (int, LWID *);
} LWStateQueryFuncs;

#define LWM_MODE_SELECTION	 0
#define LWM_MODE_SYMMETRY	 1
#define LWM_VMAP_WEIGHT		 0
#define LWM_VMAP_TEXTURE	 1
#define LWM_VMAP_MORPH		 2


#define LWFONTLISTFUNCS_GLOBAL		"LWM: Font List"

typedef struct st_LWFontListFuncs {
	int		(*count) (void);
	int		(*index) (const char *name);
	const char *	(*name)  (int index);
	int		(*load)  (const char *filename);
	void		(*clear) (int index);
} LWFontListFuncs;


#endif
